package com.vlong.town.service.place;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.vlong.town.entity.place.Place;
import com.vlong.town.mapper.place.PlaceMapper;

/**
 * @author Assassin
 */
@Service
public class PlaceService {

	// Fields

	@Autowired
	private PlaceMapper placeMapper;// DAO接口

	// Methods

	/**
	 * 添加
	 * @param placeId 主键
	 * @param townId 村镇Id
	 * @param placeType 场所类型
	 * @param title 场所名称
	 * @param placeDesc 场所描述
	 * @param isDel 数据状态[1-删除,0不删数]
	 * @param status 业务状态
	 * @param address 场所地址
	 * @param lng 经度
	 * @param lat 纬度
	 * @param createTime 创建时间
	 * @param updateTime 修改时间
	 * @return Long placeId 添加后的数据库主键值
	 */
	public Long add(Long placeId, Long townId, Integer placeType, String title,String intro, String placeDesc, Integer isDel, Integer status, String address, Float lng, Float lat, Long createTime, Long updateTime) {
		// 构造参数实体
		Place place = new Place();
		place.setPlaceId(placeId);// Set 主键
		place.setTownId(townId);// Set 村镇Id
		if(placeType == null){
			place.setType(1);// Set 场所类型
		}else{
			place.setType(placeType);// Set 场所类型
		}
		place.setTitle(title);// Set 场所名称
		place.setIntro(intro);// Set 场所名称
		place.setPlaceDesc(placeDesc);// Set 场所描述
		place.setIsDel(0);// Set 数据状态[1-删除,0不删数]
		place.setStatus(status);// Set 业务状态
		place.setAddress(address);// Set 场所地址
		place.setLng(lng);// Set 经度
		place.setLat(lat);// Set 纬度
		place.setCreateTime(System.currentTimeMillis());// Set 创建时间
		place.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		this.placeMapper.insert(place);
		return place.getPlaceId();
	}

	/**
	 * 删除
	 * @param placeId 主键值
	 */
	public void delete(Long placeId) {
		// 调用DAO接口
		this.placeMapper.delete(placeId);
	}

	/**
	 * 更新
	 * @param placeId 主键
	 * @param townId 村镇Id
	 * @param placeType 场所类型
	 * @param title 场所名称
	 * @param placeDesc 场所描述
	 * @param isDel 数据状态[1-删除,0不删数]
	 * @param status 业务状态
	 * @param address 场所地址
	 * @param lng 经度
	 * @param lat 纬度
	 * @param createTime 创建时间
	 * @param updateTime 修改时间
	 */
	public void edit(Long placeId, Long townId, Integer placeType, String title,String intro, String placeDesc, Integer isDel, Integer status, String address, Float lng, Float lat, Long createTime, Long updateTime) {
		// 构造参数实体
		Place place = new Place();
		place.setPlaceId(placeId);// Set 主键
		place.setTownId(townId);// Set 村镇Id
		place.setType(placeType);// Set 场所类型
		place.setTitle(title);// Set 场所名称
		place.setIntro(intro);// Set 场所名称
		place.setPlaceDesc(placeDesc);// Set 场所描述
		place.setIsDel(isDel);// Set 数据状态[1-删除,0不删数]
		place.setStatus(status);// Set 业务状态
		place.setAddress(address);// Set 场所地址
		place.setLng(lng);// Set 经度
		place.setLat(lat);// Set 纬度
		place.setCreateTime(createTime);// Set 创建时间
		place.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		this.placeMapper.update(place);
	}

	/**
	 * 主键查询
	 * @param placeId 主键值
	 * @return Place 实体
	 */
	public Place queryById(Long placeId) {
		// 调用DAO接口
		return this.placeMapper.selectById(placeId);
	}

	/**
	 * 根据条件查询列表
	 * @param placeId 主键
	 * @param townId 村镇Id
	 * @param placeType 场所类型
	 * @param title 场所名称
	 * @param placeDesc 场所描述
	 * @param isDel 数据状态[1-删除,0不删数]
	 * @param status 业务状态
	 * @param address 场所地址
	 * @param lng 经度
	 * @param lat 纬度
	 * @param createTime 创建时间
	 * @param updateTime 修改时间
	 * @return List<Place> 实体List
	 */
	public List<Place> queryList(Long placeId, Long townId, Integer placeType, String title, String placeDesc, Integer isDel, Integer status, String address, Float lng, Float lat, Long createTime, Long updateTime) {
		// 构造参数实体
		Place place = new Place();
		place.setPlaceId(placeId);// Set 主键
		place.setTownId(townId);// Set 村镇Id
		place.setType(placeType);// Set 场所类型
		place.setTitle(title);// Set 场所名称
		place.setPlaceDesc(placeDesc);// Set 场所描述
		place.setIsDel(isDel);// Set 数据状态[1-删除,0不删数]
		place.setStatus(status);// Set 业务状态
		place.setAddress(address);// Set 场所地址
		place.setLng(lng);// Set 经度
		place.setLat(lat);// Set 纬度
		place.setCreateTime(createTime);// Set 创建时间
		place.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		return this.placeMapper.selectList(place);
	}

	/**
	 *根据条件查询
	 * place 对象
	 */
	public List<Place> query(Place place) {

		return this.placeMapper.selectList(place);
	}


}